The present invention relates generally to error detection in a read channel. More specifically, a system and method for precomputing an error signal from a Viterbi output is disclosed.
FIG. 1A is a block diagram of a magnetic disk reading system including circuitry for reading an analog signal from a magnetic storage disk. An analog signal is recovered from a detector and input to analog front end 202. Analog front end 202 includes various analog processing components that condition the signal from the detector for deriving a digital signal from the analog data. For example, analog front end 202 may include a boost filter for boosting the high frequency component of the signal from the detector. Analog front end 202 may also include an adjustable gain amplifier that amplifies the signal. In addition, analog front end 202 may include an adjustable timing loop that recovers a clock from the signal or adjusts a clock to be synchronized to the analog data signal read from the detector. Analog front end 202 may also include an adaptive equalizer for equalizing the analog signal.
Some or all of the above-mentioned analog components may be adaptable based on the signal that is being read. Different disk drive systems tend to have different channel transfer functions or responses when data is read from disk. In fact, a single disk or disk drive may change as the disk or disk drive ages and experiences wear. As a result, it is often necessary to adjust the parameters of the devices in the analog front end such as the boost filter, the gain, the amplifier, the timing recovery circuit, and the equalizer to adapt to changes in the disk. Also, these various components may need to be adapted to vary for changes that occur in reading different regions of a single disk.
The output from analog front end 202 is input to an analog-to-digital converter (ADC) 204. The output of analog-to-digital converter 204 in one embodiment is a six-bit output that forms part of a sequence, Z: z1, z2, . . . zn, zn+1. . . , Z is the data sequence that results from the data that was originally written to the disk being transformed by the data channel. The six-bit representation of the elements of the input sequence at the output has more precision than the input data itself because it has been transformed by intersymbol interference and other effects of the channel.
The digitized output of ADC 204 is input to a Viterbi detector 206. Viterbi detector 206 is configured to read the six-bit output from the analog-to-digital converter and to determine, based on the sequence of data, the most likely input sequence that produced the sequence. The Viterbi detector may do that by determining the Euclidean distance from a given output sequence to different possible output sequences that correspond to various input sequences. The possible output sequence that is the closest to the detected output sequence is determined to be the correct output sequence. In doing this, the Viterbi detector must look at more than one element of the output sequence of the analog-to-digital converter because the transfer function of the channel and analog front end 202 is generally a function of more than one element in the data sequence. For example, one type of coding, EPR4, has a transfer function that is 1+Dxe2x88x92D2xe2x88x92D3. Thus, Viterbi detector 206 operates on the raw digitized output from the ADC to produce a recovered data sequence corresponding to a most likely input sequence.
The performance of components in analog front end 202, such as the equalizer and the timing recovery circuit, can be improved by adapting their characteristics using feedback from the output. To that end, an error signal that describes the difference between the raw digitized output and the recovered data signal is computed. Accordingly, the output of Viterbi detector 206 is sent to error signal calculation circuitry 208. Error signal calculation circuitry 208 computes an error signal by subtracting the transformed output of Viterbi detector 206 from the corresponding output of ADC 204. In addition, error signal calculation circuitry 208 may calculate other parameters such as a level signal. A level signal indicates whether an output is positive, negative, or zero and can be used in conjunction with the error signal to improve the performance of components in analog front end 202.
The output of error signal calculation circuitry 208 is sent to a control parameter adjustment generator 210. Control parameter adjustment generator 210 uses the signals calculated by error signal calculation circuitry 208 to compute parameters that can be used to improve the performance of, for example, the timing loop, the gain loop, the offset loop, the MR amplitude asymmetry loop, and the filter boost loop in analog front end 202.
FIG. 1B is a block diagram of an implementation of error signal calculation circuitry 208. A recovered output signal 220, an, is received from Viterbi detector 206 and sent to circuitry 222 that applies a transfer function to the recovered output signal.
The transfer function applied by circuitry 222 typically relies on multiple terms in the sequence, A, of recovered output signals, a1, a2, . . . an, an+1. . . . Thus, circuitry 222 typically includes memory elements for storing a plurality of recovered output signals, anxe2x88x921, anxe2x88x922, anxe2x88x923, from Viterbi detector 206, and also includes a processor or logic for applying a transfer function to the sequence of recovered output signals.
Circuitry 222 operates on a sequence of recovered output signals, an, anxe2x88x921, anxe2x88x922, anxe2x88x923, to produce a transformed signal, xn. This transformed signal, xn, is used to compute an error signal, en, and a level signal, leveln. The error signal, en, is computed by subtracting the transformed output signal, xn, from the raw digitized output signal, zn, (224) where zn represents the output signal corresponding to the recovered data signal, an, from which the transformed signal, xn, was calculated. The level signal is calculated from the transformed output, xn, and simply indicates whether xnis positive, negative, or zero (226).
Because circuitry 222 uses a sequence of recovered output signals to calculate Xn xe2x80x94xe2x80x94for example, the EPR4 transfer function uses an, anxe2x88x921, anxe2x88x922, and anxe2x88x923xe2x80x94there is a delay of several clock cycles while circuitry 222 waits to receive this sequence. Moreover, because the calculation of xn is relatively complexxe2x80x94requiring several multi-bit additions and subtractionsxe2x80x94it typically requires multiple clock cycles to complete, even after the sequence of recovered output signals, an, anxe2x88x921, anxe2x88x922, anxe2x88x923, has been received.
Thus, to compute an error signal, en, circuitry 222 first waits several clock cycles to collect the sequence of recovered output signals, an, necessary to calculate xn. This is followed by additional delay while the transfer function is applied to yield xn. And finally, additional delay occurs when xn is subtracted from the raw digitized output signal zn to yield en.
Thus, while the above-described system is effective for disk reading schemes that utilize a simple read-channel target transfer function such as PRML or EPRML, it begins to lose its effectiveness as the complexity of the target transfer function increases, and each element of the read channel output sequence becomes a function of a greater number of input sequence elements. Computing the error from the input to the output in the manner described above for a system with a more complex transfer function, such as EPR4, requires the recovery of several output data points before the error can determined. This increases the latency of the system and reduces the effectiveness of the feedback loop.
Accordingly, a better method of calculating the error is needed to decrease the delay in the feedback loop and to increase the effectiveness of various adaptive elements in the read channel.
A reduced latency method of calculating an error signal based on the output of a Viterbi detector is disclosed. Certain terms of the error signal are precomputed before the final output of the Viterbi detector is determined. The precomputed terms are used to determine the error in fewer clock cycles once the Viterbi output is determined. In one embodiment, the final Viterbi output is used as an input to a multiplexer that selects a precomputed error. In addition to calculating an error signal, a level signal may be precomputed as well so that the level signal is available more quickly after the output of the Viterbi detector is determined.
In one embodiment, a system for determining an error signal from an output of a Viterbi detector includes an analog-to-digital converter for converting a raw output from a data channel into a raw digitized output. A Viterbi detector determines a recovered data sequence from the raw digitized output. An error signal preprocessor is operable to compute a partial error signal from a first portion of the recovered data sequence and the raw digitized output. An error signal processor is operable to compute a final error signal from the partial error signal and a second portion of the recovered data sequence.
In one embodiment, a method of determining one or more signals includes receiving a raw digitized output from a data channel. A first portion of a recovered data sequence determined from the raw digitized output is received. A partial error signal is precomputed from the first portion of the recovered data sequence and the raw digitized output. A second portion of a recovered data sequence determined from the raw digitized output is received. A final error signal is computed from the partial error signal and a second portion of the recovered data sequence.
In one embodiment, a method of determining a level signal includes receiving a recovered data sequence determined from the raw digitized output by a Viterbi detector. A partial level signal is precomputed from a first portion of the recovered data sequence and the raw digitized output. A final level signal is computed from the partial level signal and a second portion of the recovered data sequence.